package com.keya.utils;

import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.ZipUtil;
import cn.hutool.extra.compress.CompressUtil;
import cn.hutool.extra.compress.extractor.Extractor;

import java.io.File;

/**
 * 压缩包处理工具.
 *
 * @author : xf.he
 * @version : 1.0 2023/3/9
 * @since : 1.0
 **/
public class ArchiveUtils {

    /**
     * 判断是否为支持的压缩包
     *
     * @param file 文件
     * @return boolean
     */
    public static boolean isArchive(File file) {
        String fileName = file.getName().toLowerCase();
        return fileName.endsWith(".tgz") ||
                fileName.endsWith(".tar.gz") ||
                fileName.endsWith(".tar") ||
                fileName.endsWith(".zip");
    }

    /**
     * 解压压缩包
     *
     * @param file 文件
     * @param path 路径
     */
    public static void unarchive(File file, String path) {
        String fileName = file.getName().toLowerCase();
        if (fileName.endsWith(".zip")) {
            ZipUtil.unzip(file.getPath(), path);
        } else if (fileName.endsWith(".tar")) {
            Extractor extractor = CompressUtil.createExtractor(
                    CharsetUtil.defaultCharset(), file);
            extractor.extract(new File(path));
        } else if (fileName.endsWith(".tar.gz") || fileName.endsWith(".tgz")) {
            Extractor extractor = CompressUtil.createExtractor(
                    CharsetUtil.defaultCharset(), "tgz", file);
            extractor.extract(new File(path));
        }else {
            throw new RuntimeException("不支持的压缩类型");
        }
    }
}
